package cn.script.common;

import java.util.HashMap;
import java.util.Map;

public class VsCode {
    private Map<String, Integer> VS_CODE = new HashMap<String, Integer>();

    public static final VsCode vsCode = new VsCode();

    static {
        vsCode.add("1", 49)
                .add("2", 50)
                .add("3", 51)
                .add("4", 52)
                .add("5", 53)
                .add("6", 54)
                .add("7", 55)
                .add("8", 56)
                .add("9", 57)
                .add("0", 48)
                .add("-", 189)
                .add("=", 187)
                .add("back", 8)
                .add("a", 65)
                .add("b", 66)
                .add("c", 67)
                .add("d", 68)
                .add("e", 69)
                .add("f", 70)
                .add("g", 71)
                .add("h", 72)
                .add("i", 73)
                .add("j", 74)
                .add("k", 75)
                .add("l", 76)
                .add("m", 77)
                .add("n", 78)
                .add("o", 79)
                .add("p", 80)
                .add("q", 81)
                .add("r", 82)
                .add("s", 83)
                .add("t", 84)
                .add("u", 85)
                .add("v", 86)
                .add("w", 87)
                .add("x", 88)
                .add("y", 89)
                .add("z", 90)
                .add("ctrl", 17)
                .add("alt", 18)
                .add("shift", 16)
                .add("win", 91)
                .add("space", 32)
                .add("cap", 20)
                .add("tab", 9)
                .add("~", 192)
                .add("esc", 27)
                .add("enter", 13)
                .add("up", 38)
                .add("down", 40)
                .add("left", 37)
                .add("right", 39)
                .add("option", 93)
                .add("print", 44)
                .add("delete", 46)
                .add("home", 36)
                .add("end", 35)
                .add("pgup", 33)
                .add("pgdn", 34)
                .add("f1", 112)
                .add("f2", 113)
                .add("f3", 114)
                .add("f4", 115)
                .add("f5", 116)
                .add("f6", 117)
                .add("f7", 118)
                .add("f8", 119)
                .add("f9", 120)
                .add("f10", 121)
                .add("f11", 122)
                .add("f12", 123)
                .add("[", 219)
                .add("]", 221)
                .add("\\", 220)
                .add(";", 186)
                .add("'", 222)
                .add(",", 188)
                .add(".", 190)
                .add("/", 191);

    }


    private VsCode() {
    }

    public static int code(String key) {
        return vsCode.getCode(key);
    }

    public VsCode add(String key, int code) {
        this.VS_CODE.put(key, code);
        return this;
    }

    public int getCode(String key) {
        return this.VS_CODE.get(key);
    }


}
